use std::net::UdpSocket;

fn main() {
    {
        let socket = UdpSocket::bind("127.0.0.1:50000").unwrap();

        loop {
            // 在套接字上接收单个数据报消息。
            // 如果 `buf` 太小而无法容纳该消息，它将被切断。
            let mut buf = [0; 32*1024];
            let (amt, src) = socket.recv_from(&mut buf).unwrap();
            println!("get count: {} data", amt);

            // 将 `buf` 声明为接收数据的切片，并将反向数据发送回原点。
            let buf = &mut buf[..amt];
            buf.reverse();
            socket.send_to(&buf[..amt], &src);
        }

    }

}